pub fn calc_md5(data: &[u8]) -> String {
    let result = md5::compute(data);
    let mut hex_str = String::new();
    for byte in result.iter() {
        hex_str.push_str(&format!("{:02x}", byte));
    }
    hex_str
}